package com.turing.post.salesmanage.util;

import java.math.BigInteger;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 充值单卡充值明细（DepositOrderDetail）
 * 
 * @author zxp
 * @Jan 17, 2013
 */
@Remote
@Local
public interface DepositOrderDetailDao {

	/**
	 * 根据主键查询充值单充值明细
	 */
	public DepositOrderDetail getDepositOrderDetailByPK(DepositOrderDetail dod);

	/**
	 * 根据充值单编号查询充值单卡明细
	 * 
	 * @param depositOrderId
	 * @return
	 */
	public List<DepositOrderDetail> getDepositOrderDetailListByDepositOrderId(
			BigInteger depositOrderId);

	/**
	 * 分页查询充值单卡明细
	 * 
	 * @param webInput
	 * @param depositOrderId
	 * @param page
	 * @return
	 */
	public List<DepositOrderDetail> getDepositOrderDetailListByCondition(
			BigInteger depositOrderId, Integer page);

	/**
	 * 查询充值单卡明细记录数
	 * 
	 * @param webInput
	 * @param depositOrderId
	 * @return
	 */
	public BigInteger getDepositOrderDetailTotalByCondition(
			BigInteger depositOrderId);

	/**
	 * 新增
	 * 
	 * @param dod
	 */
	public void insertDepositOrderDetail(DepositOrderDetail dod)
			throws PCPSApplicationException;

	//
	// /**
	// * 修改
	// *
	// * @param DepositOrderDetail
	// */
	// public void updateDepositOrderDetail(DepositOrderDetail dod)
	// throws PCPSApplicationException;

	/**
	 * 删除
	 * 
	 * @param depositOrderId
	 */
	public Integer deleteDepositOrderDetailByDepositOrderId(
			BigInteger depositOrderId) throws PCPSApplicationException;

	/**
	 * 根据购卡人类型名称查询批量充值卡列表
	 * 
	 * @param webInput
	 * @param serchType
	 *            0 - 充值单 1 - 销售单 未充值过数据选择 查询充值单已充值列表还是销售单已购卡列表
	 * @param buyerType
	 *            购卡人类型
	 * @param name
	 *            名称
	 * @return
	 */
	public List<DepositOrderDetail> getDepositOrderCardList(
			PCPSWebInput webInput, String serchType, String buyerType,
			String name);

	/**
	 * 同一实名制个人客户，一天内卡充值超过2万元
	 * 
	 * @param issueCompanyNo
	 *            发卡商编号
	 * @param startTime
	 *            起始时间
	 * @param endTime
	 *            终止时间
	 * @param totalSaleAmount
	 *            总售卡金额
	 * @return
	 */
	public List<Object[]> getDepositOrderCardByAlarmRule4(
			String issueCompanyNo, String startTime, String endTime);

	/**
	 * 卡充值单明细报表:根据充值单id获取充值单明细
	 * 
	 * @param orderId
	 * @return
	 */
	public List<Object[]> getDepositOrderCardDetailReportByOrderId(
			BigInteger orderId);
}
